#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>


int main()
{
    close(1);
    int fd = open("log.txt", O_CREAT | O_WRONLY | O_APPEND, 0666);
    printf("fd: %d\n", fd);
    // 库函数
    printf("Ciallo~\n");
    printf("Ciallo~\n");
    printf("Ciallo~\n");
    printf("Ciallo~\n");
    // 系统调用
    const char *msg = "Ciallo~ write~\n"; 
    write(fd, msg, strlen(msg));
    // close
    close(fd);
    return 0;
}



//int main(int argc, char *argv[])
//{
//    if (argc != 2) exit(1);
//    //int fd = open("log.txt", O_RDONLY);
//    int fd = open(argv[1], O_RDONLY);
//    if (fd < 0) exit(1);
//
//    dup2(fd, 0);
//    close(fd);
//
//    while (1)
//    {
//        char buffer[64];
//        if (!fgets(buffer, sizeof(buffer), stdin)) break;
//
//        printf("%s", buffer);
//    }
//    return 0;
//}




//int main()
//{
//    //close(1);
//
//    int fd = open("log.txt", O_CREAT | O_WRONLY | O_TRUNC, 0666);
//    if (fd < 0) exit(1);
//    dup2(fd, 1);
//    close(fd);
//
//    // 默认向显示器输出
//    printf("fd: %d\n", fd);
//    printf("Ciallo~\n");
//    //printf("Ciallo~\n");
//    //printf("Ciallo~\n");
//    //fprintf(stdout, "Ciallo~Stdout~\n");
//    //fprintf(stdout, "Ciallo~Stdout~\n");
//    //fprintf(stdout, "Ciallo~Stdout~\n");
//
//    //const char *msg = "ZMZZZMZZ\n";
//    //write(fd, msg, strlen(msg));
//
//    //close(fd);
//
//    return 0;
//}


//int main()
//{
//    //printf("stdin: %d\n", stdin->_fileno);
//    //printf("stdout: %d\n", stdout->_fileno);
//    //printf("stderr: %d\n", stderr->_fileno);
//    //printf("\n");
//    
//    umask(0);
//    int fd1 = open("log1.txt", O_CREAT | O_WRONLY | O_TRUNC, 0666);
//    int fd2 = open("log2.txt", O_CREAT | O_WRONLY | O_TRUNC, 0666);
//    int fd3 = open("log3.txt", O_CREAT | O_WRONLY | O_TRUNC, 0666);
//    int fd4 = open("log4.txt", O_CREAT | O_WRONLY | O_TRUNC, 0666);
//    if (fd1 < 0) exit(1);
//    if (fd2 < 0) exit(1);
//    if (fd3 < 0) exit(1);
//    if (fd4 < 0) exit(1);
//
//    printf("fd1: %d\n", fd1);
//    printf("fd2: %d\n", fd2);
//    printf("fd3: %d\n", fd3);
//    printf("fd4: %d\n", fd4);
//
//    close(fd1);
//    close(fd2);
//    close(fd3);
//    close(fd4);
//    return 0;
//}

// 读文件
//int main()
//{
//    umask(0);
//    int fd = open("log.txt", O_RDONLY); 
//    
//    if (fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    printf("fd: %d\n", fd);
//    
//    while (1)
//    {
//        char buffer[64];
//        int n = read(fd, buffer, sizeof(buffer) - 1);
//        if (n > 0)
//        {
//            buffer[n] = 0;
//            printf("%s", buffer);
//        }
//        else if (n == 0)
//        {
//            break;
//        }
//    }
//
//    close(fd);
//    return 0;
//}



// 写文件
//int main()
//{
//    umask(0);
//    int fd = open("log.txt", O_CREAT | O_WRONLY | O_TRUNC, 0666);//创建 写入 清空
//    //int fd = open("log.txt", O_CREAT | O_WRONLY | O_APPEND, 0666);//创建 写入 追加
//    if (fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    printf("fd: %d\n", fd);
//    
//    // const char *msg = "Ciallo~\n";
//    const char *msg = "abcd";
//    int cnt = 1;
//    int a = 1234567;
//    while (cnt)
//    {
//        //write(fd, msg, strlen(msg));
//        char buffer[16];
//        snprintf(buffer, sizeof(buffer), "%d", a);
//        write(fd, buffer, strlen(buffer));
//        //strlen不能+1,会有乱码,\n是C语言的规定~
//        cnt--;
//    }
//
//
//    close(fd);
//    return 0;
//}




